SQL 错误 [1055] [42000]mysql group by重复数据筛选的用法

您所在的位置:网站首页 sas group by 用法 SQL 错误 [1055] [42000]mysql group by重复数据筛选的用法

SQL 错误 [1055] [42000]mysql group by重复数据筛选的用法

2023-01-05 18:02| 来源: 网络整理| 查看: 265

SQL 错误 [1055] [42000]mysql group by重复数据筛选的用法

文章目录 SQL 错误 [1055] [42000]mysql group by重复数据筛选的用法前言一、group by基础用法二、group by去重复的用法1.关闭sql_mode “ONLY_FULL_GROUP_BY”2.视条件使用MAX(),MIN(),SUM(),ANT_VALUE() 这种聚合函数 总结

前言

提示:SQL 错误 [1055] [42000]: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'plt_om_test.t.ticket_type_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

在工作过程中遇到的问题,上述报错是因为在 MySQL 5.7 版本中,默认开启了 only_full_group_by 模式,使得group by的用法需要涵盖全部非同字段,当我们只需要一条重复数据的其中一条时显得没那么好用

提示:以下是本篇文章正文内容,下面案例可供参考

一、group by基础用法 select t.type_code_fullname, t.name from kf_terminal_tickettype_sw t group by t.type_code_fullname, t.name

有可能会出现重复数据,如下图 在这里插入图片描述

二、group by去重复的用法 1.关闭sql_mode “ONLY_FULL_GROUP_BY”

此方法数据库重启后会失效:

查询sql_mode select @@GLOBAL.sql_mode;

查询结果会包含“ONLY_FULL_GROUP_BY”,我们只需执行下述命令,把“ONLY_FULL_GROUP_BY”删除替换原来配置,即可临时更新配置

set sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';

关闭“ONLY_FULL_GROUP_BY”配置后即可使用非全匹配group by,有重复数据会默认取列表第一个

select type_code_fullname,name from kf_terminal_tickettype_sw group by type_code_fullname

在这里插入图片描述

2.视条件使用MAX(),MIN(),SUM(),ANT_VALUE() 这种聚合函数

代码如下(示例):

select type_code_fullname,min(name) from kf_terminal_tickettype_sw group by type_code_fullname

在这里插入图片描述 这里补充介绍一下ANT_VALUE() 用法

//ANT_VALUE() : select type_code_fullname,any_value(name) from kf_terminal_tickettype_sw group by type_code_fullname

ANT_VALUE() 会默认取列表里面的筛选出的第一项数据

总结

以上就是今天要讲的内容,本文仅仅简单介绍了gruop by的使用和使用过程中遇到的一个问题处理,希望遇到问题的时候看到这篇文档能帮助到你们。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3